Turbo codes are a class of high performance error correction codes that have been widely adopted in many wireless cellular standards. Turbo codes have been shown to achieve an error rate performance that is very close to the Shannon limit, the theoretical limit of maximum information transfer rate over the Additive White Gaussian Noise (AWGN) channel.
A turbo code encoder is shown in FIG. 1. The turbo code encoder comprises two encoders, encoder 1 and encoder 2 that are connected together using a concatenation scheme called parallel concatenation. The turbo code encoder is arranged to encode a frame of data together with a Cyclic Redundancy Check (CRC) code to produce systematic bits and parity bits. These bits are then punctured to produce the required code rate before the bits are transmitted from the transmitter as a sequence of symbols.
At a receiver, a turbo code decoder recovers the original frame of data and the CRC from the sequence of symbols. The turbo code decoder is shown in FIG. 2. The turbo code decoder comprises two Maximum A Posteriori (MAP) decoders, (decoder 1 and decoder 2). Each constituent MAP decoder calculates an LLR (logarithm likelihood ratio) Λ(r) for a data bit of the received symbol as shown in Equation 1:
                              Λ          ⁡                      (            r            )                          =                  ln          ⁢                                                                                ⁢                                                p                  0                                ⁢                                  (                  r                  )                                                                                    p                1                            ⁡                              (                r                )                                                                        Equation        ⁢                                  ⁢                  (          1          )                    
where p0(r) is the probability density function of the received (rx) data if “+1” was transmitted and p1(r) is the probability density function of the received data if “−1” was transmitted. The decoding process iterates a number of times as shown in the iteration loop 220 before outputting the LLR to a hard decision block 221. The hard decision block uses the output LLR to decode the bit as a −1 or 1.
The LLR computed in the turbo code decoder is a function of the signal and noise powers and the statistics of the communication channel. Typically these estimates are derived by assuming that the channel is a stationary AWGN channel.
Modelling the channel as an AWGN channel is often an incorrect assumption. This compromises the operation of the turbo decoder and thus the sensitivity of the receiver.
More generally, the operation of any decoder, not just turbo decoders, is enhanced with the use of more appropriate LLRs. Improved LLRs can be obtained by increasing the number of samples, but this has an effect on processing time and load. Moreover, an increase in the number of samples may still adequately not deal with noise, and so may not give an improved LLR.
It is therefore an object of the invention to improve the operation of a decoder in order by providing more accurate LLRs, while not unduly increasing processor load.